﻿using System;
using System.Data;
using System.Data.SqlClient;

namespace HRMService
{
    public partial class MainService : INhanSu
    {
        public DataSet NhanSu_GetAll()
        {
            DataSet retVal = null;
            SqlConnection dbConn = new SqlConnection(Properties.Settings.Default.ConnectionString);
            SqlCommand dbCmd = new SqlCommand("HRM_NhanSu_GetAll", dbConn);
            dbCmd.CommandType = CommandType.StoredProcedure;
            try
            {
                retVal = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter(dbCmd);
                da.Fill(retVal);
            }
            finally
            {
                dbConn.Close();
            }
            return retVal;
        }

        public bool NhanSu_Delete(int NhanSuID)
        {
            bool retVal = false;
            SqlConnection dbConn = new SqlConnection(Properties.Settings.Default.ConnectionString);
            SqlCommand dbCmd = new SqlCommand("HRM_NhanSu_Delete", dbConn);
            dbCmd.CommandType = CommandType.StoredProcedure;
            dbCmd.Parameters.AddWithValue("@NhanSu_ID", NhanSuID);

            try
            {
                dbConn.Open();
                if (dbCmd.ExecuteNonQuery() > 0)
                {
                    retVal = true;
                }
            }
            finally
            {
                dbConn.Close();
            }
            return retVal;
        }

        public int NhanSu_Insert(NhanSuInfo eInfo)
        {
            int retVal = 0;
            SqlConnection dbConn = new SqlConnection(Properties.Settings.Default.ConnectionString);
            SqlCommand dbCmd = new SqlCommand("HRM_NhanSu_Insert", dbConn);
            dbCmd.CommandType = CommandType.StoredProcedure;
            if (eInfo.SoCMT.Trim().Length == 0)
                dbCmd.Parameters.AddWithValue("@NhanSu_SoCMT", DBNull.Value);
            else
                dbCmd.Parameters.AddWithValue("@NhanSu_SoCMT", eInfo.SoCMT);
            dbCmd.Parameters.AddWithValue("@NhanSu_SoSoBHXH", eInfo.SoSoBHXH);
            dbCmd.Parameters.AddWithValue("@NhanSu_HoVaTen", eInfo.HoVaTen);
            dbCmd.Parameters.AddWithValue("@NhanSu_GioiTinh", eInfo.GioiTinh);
            if (eInfo.NgaySinh == DateTime.MinValue)
                dbCmd.Parameters.AddWithValue("@NhanSu_NgaySinh", DBNull.Value);
            else
                dbCmd.Parameters.AddWithValue("@NhanSu_NgaySinh", eInfo.NgaySinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_DanToc", eInfo.DanToc);
            dbCmd.Parameters.AddWithValue("@NhanSu_QuocGia", eInfo.QuocGia);
            dbCmd.Parameters.AddWithValue("@NhanSu_DienThoai", eInfo.DienThoai);
            dbCmd.Parameters.AddWithValue("@NhanSu_Email", eInfo.Email); 
            dbCmd.Parameters.AddWithValue("@NhanSu_NoiCapCMT", eInfo.NoiCapCMT);
            if (eInfo.NgayCapCMT == DateTime.MinValue)
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayCapCMT", DBNull.Value);
            else
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayCapCMT", eInfo.NgayCapCMT);
            dbCmd.Parameters.AddWithValue("@NhanSu_NoiKham", eInfo.NoiKham);
            dbCmd.Parameters.AddWithValue("@NhanSu_MaBenhVien", eInfo.MaBenhVien);
            dbCmd.Parameters.AddWithValue("@NhanSu_ChaMe", eInfo.ChaMe);
            dbCmd.Parameters.AddWithValue("@NhanSu_ThanNhanKhac", eInfo.ThanNhanKhac);
            dbCmd.Parameters.AddWithValue("@NhanSu_DiaChiKhaiSinh", eInfo.DiaChiKhaiSinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhuongKhaiSinh", eInfo.PhuongKhaiSinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_QuanKhaiSinh", eInfo.QuanKhaiSinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_ThanhPhoKhaiSinh", eInfo.ThanhPhoKhaiSinh);

            dbCmd.Parameters.AddWithValue("@NhanSu_DiaChiHoKhau", eInfo.DiaChiHoKhau);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhuongHoKhau", eInfo.PhuongHoKhau);
            dbCmd.Parameters.AddWithValue("@NhanSu_QuanHoKhau", eInfo.QuanHoKhau);
            dbCmd.Parameters.AddWithValue("@NhanSu_ThanhPhoHoKhau", eInfo.ThanhPhoHoKhau);
            dbCmd.Parameters.AddWithValue("@NhanSu_DiaChiLienHe", eInfo.DiaChiLienHe);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhuongLienHe", eInfo.PhuongLienHe);
            dbCmd.Parameters.AddWithValue("@NhanSu_QuanLienHe", eInfo.QuanLienHe);
            dbCmd.Parameters.AddWithValue("@NhanSu_ThanhPhoLienHe", eInfo.ThanhPhoLienHe);
            dbCmd.Parameters.AddWithValue("@NhanSu_SoHopDong", eInfo.SoHopDong);
            if (eInfo.NgayKy == DateTime.MinValue)
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayKy", DBNull.Value);
            else
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayKy", eInfo.NgayKy);
            if (eInfo.NgayHieuLuc == DateTime.MinValue)
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayHieuLuc", DBNull.Value);
            else
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayHieuLuc", eInfo.NgayHieuLuc);
            dbCmd.Parameters.AddWithValue("@NhanSu_LoaiHopDong", eInfo.LoaiHopDong);
            dbCmd.Parameters.AddWithValue("@NhanSu_ChucVu", eInfo.ChucVu);
            dbCmd.Parameters.AddWithValue("@NhanSu_LuongChinh", eInfo.LuongChinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_LuongKhac", eInfo.LuongKhac);
            dbCmd.Parameters.AddWithValue("@NhanSu_PCChucVu", eInfo.PCChucVu);
            dbCmd.Parameters.AddWithValue("@NhanSu_TNVK", eInfo.TNVK);
            dbCmd.Parameters.AddWithValue("@NhanSu_TNNghe", eInfo.TNNghe);
            dbCmd.Parameters.AddWithValue("@NhanSu_TangLuongChinh", eInfo.TangLuongChinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_TangPCChucVu", eInfo.TangPCChucVu);
            dbCmd.Parameters.AddWithValue("@NhanSu_TangTNVK", eInfo.TangTNVK);
            dbCmd.Parameters.AddWithValue("@NhanSu_TangTNNghe", eInfo.TangTNNghe);
            dbCmd.Parameters.AddWithValue("@NhanSu_KhongTNVK", eInfo.KhongTNVK);
            dbCmd.Parameters.AddWithValue("@NhanSu_KhongTNNghe", eInfo.KhongTNNghe);
            dbCmd.Parameters.AddWithValue("@NhanSu_ThuNhapBHTN", eInfo.ThuNhapBHTN);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhuongThucBHTN", eInfo.PhuongThucBHTN);
            dbCmd.Parameters.AddWithValue("@NhanSu_DoiTuongBHYT", eInfo.DoiTuongBHYT);
            dbCmd.Parameters.AddWithValue("@NhanSu_MucTienBHYT", eInfo.MucTienBHYT);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhuongThucBHYT", eInfo.PhuongThucBHYT);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhongBan", eInfo.PhongBan);
            dbCmd.Parameters.AddWithValue("@NhanSu_DaThoiViec", eInfo.DaThoiViec);

            try
            {
                dbConn.Open();
                retVal = Convert.ToInt32(dbCmd.ExecuteScalar());
            }
            finally
            {
                dbConn.Close();
            }
            return retVal;
        }

        public bool NhanSu_Update(NhanSuInfo eInfo)
        {
            bool retVal = false;
            SqlConnection dbConn = new SqlConnection(Properties.Settings.Default.ConnectionString);
            SqlCommand dbCmd = new SqlCommand("HRM_NhanSu_Update", dbConn);
            dbCmd.CommandType = CommandType.StoredProcedure;
            dbCmd.Parameters.AddWithValue("@NhanSu_ID", eInfo.ID);
            if (eInfo.SoCMT.Trim().Length == 0)
                dbCmd.Parameters.AddWithValue("@NhanSu_SoCMT", DBNull.Value);
            else
                dbCmd.Parameters.AddWithValue("@NhanSu_SoCMT", eInfo.SoCMT);
            dbCmd.Parameters.AddWithValue("@NhanSu_SoSoBHXH", eInfo.SoSoBHXH);
            dbCmd.Parameters.AddWithValue("@NhanSu_HoVaTen", eInfo.HoVaTen);
            dbCmd.Parameters.AddWithValue("@NhanSu_GioiTinh", eInfo.GioiTinh);
            if (eInfo.NgaySinh == DateTime.MinValue)
                dbCmd.Parameters.AddWithValue("@NhanSu_NgaySinh", DBNull.Value);
            else
                dbCmd.Parameters.AddWithValue("@NhanSu_NgaySinh", eInfo.NgaySinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_DanToc", eInfo.DanToc);
            dbCmd.Parameters.AddWithValue("@NhanSu_QuocGia", eInfo.QuocGia);
            dbCmd.Parameters.AddWithValue("@NhanSu_DienThoai", eInfo.DienThoai);
            dbCmd.Parameters.AddWithValue("@NhanSu_Email", eInfo.Email);
            dbCmd.Parameters.AddWithValue("@NhanSu_NoiCapCMT", eInfo.NoiCapCMT);
            if (eInfo.NgayCapCMT == DateTime.MinValue)
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayCapCMT", DBNull.Value);
            else
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayCapCMT", eInfo.NgayCapCMT);
            dbCmd.Parameters.AddWithValue("@NhanSu_NoiKham", eInfo.NoiKham);
            dbCmd.Parameters.AddWithValue("@NhanSu_MaBenhVien", eInfo.MaBenhVien);
            dbCmd.Parameters.AddWithValue("@NhanSu_ChaMe", eInfo.ChaMe);
            dbCmd.Parameters.AddWithValue("@NhanSu_ThanNhanKhac", eInfo.ThanNhanKhac);
            dbCmd.Parameters.AddWithValue("@NhanSu_DiaChiKhaiSinh", eInfo.DiaChiKhaiSinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhuongKhaiSinh", eInfo.PhuongKhaiSinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_QuanKhaiSinh", eInfo.QuanKhaiSinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_ThanhPhoKhaiSinh", eInfo.ThanhPhoKhaiSinh);

            dbCmd.Parameters.AddWithValue("@NhanSu_DiaChiHoKhau", eInfo.DiaChiHoKhau);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhuongHoKhau", eInfo.PhuongHoKhau);
            dbCmd.Parameters.AddWithValue("@NhanSu_QuanHoKhau", eInfo.QuanHoKhau);
            dbCmd.Parameters.AddWithValue("@NhanSu_ThanhPhoHoKhau", eInfo.ThanhPhoHoKhau);
            dbCmd.Parameters.AddWithValue("@NhanSu_DiaChiLienHe", eInfo.DiaChiLienHe);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhuongLienHe", eInfo.PhuongLienHe);
            dbCmd.Parameters.AddWithValue("@NhanSu_QuanLienHe", eInfo.QuanLienHe);
            dbCmd.Parameters.AddWithValue("@NhanSu_ThanhPhoLienHe", eInfo.ThanhPhoLienHe);
            dbCmd.Parameters.AddWithValue("@NhanSu_SoHopDong", eInfo.SoHopDong);
            if (eInfo.NgayKy == DateTime.MinValue)
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayKy", DBNull.Value);
            else
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayKy", eInfo.NgayKy);
            if (eInfo.NgayHieuLuc == DateTime.MinValue)
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayHieuLuc", DBNull.Value);
            else
                dbCmd.Parameters.AddWithValue("@NhanSu_NgayHieuLuc", eInfo.NgayHieuLuc);
            dbCmd.Parameters.AddWithValue("@NhanSu_LoaiHopDong", eInfo.LoaiHopDong);
            dbCmd.Parameters.AddWithValue("@NhanSu_ChucVu", eInfo.ChucVu);
            dbCmd.Parameters.AddWithValue("@NhanSu_LuongChinh", eInfo.LuongChinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_LuongKhac", eInfo.LuongKhac);
            dbCmd.Parameters.AddWithValue("@NhanSu_PCChucVu", eInfo.PCChucVu);
            dbCmd.Parameters.AddWithValue("@NhanSu_TNVK", eInfo.TNVK);
            dbCmd.Parameters.AddWithValue("@NhanSu_TNNghe", eInfo.TNNghe);
            dbCmd.Parameters.AddWithValue("@NhanSu_TangLuongChinh", eInfo.TangLuongChinh);
            dbCmd.Parameters.AddWithValue("@NhanSu_TangPCChucVu", eInfo.TangPCChucVu);
            dbCmd.Parameters.AddWithValue("@NhanSu_TangTNVK", eInfo.TangTNVK);
            dbCmd.Parameters.AddWithValue("@NhanSu_TangTNNghe", eInfo.TangTNNghe);
            dbCmd.Parameters.AddWithValue("@NhanSu_KhongTNVK", eInfo.KhongTNVK);
            dbCmd.Parameters.AddWithValue("@NhanSu_KhongTNNghe", eInfo.KhongTNNghe);
            dbCmd.Parameters.AddWithValue("@NhanSu_ThuNhapBHTN", eInfo.ThuNhapBHTN);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhuongThucBHTN", eInfo.PhuongThucBHTN);
            dbCmd.Parameters.AddWithValue("@NhanSu_DoiTuongBHYT", eInfo.DoiTuongBHYT);
            dbCmd.Parameters.AddWithValue("@NhanSu_MucTienBHYT", eInfo.MucTienBHYT);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhuongThucBHYT", eInfo.PhuongThucBHYT);
            dbCmd.Parameters.AddWithValue("@NhanSu_PhongBan", eInfo.PhongBan);
            dbCmd.Parameters.AddWithValue("@NhanSu_DaThoiViec", eInfo.DaThoiViec);
            try
            {
                dbConn.Open();
                if (dbCmd.ExecuteNonQuery() > 0)
                {
                    retVal = true;
                }
            }
            finally
            {
                dbConn.Close();
            }
            return retVal;
        }

        public NhanSuInfo NhanSu_GetInfo(int NhanSuID)
        {
            NhanSuInfo retVal = null;
            SqlConnection dbConn = new SqlConnection(Properties.Settings.Default.ConnectionString);
            SqlCommand dbCmd = new SqlCommand("HRM_NhanSu_GetInfo", dbConn);
            dbCmd.CommandType = CommandType.StoredProcedure;
            dbCmd.Parameters.AddWithValue("@NhanSu_ID", NhanSuID);
            SqlDataReader dr = null;
            try
            {
                dbConn.Open();
                dr = dbCmd.ExecuteReader();
                if (dr.Read())
                {
                    retVal = new NhanSuInfo();
                    retVal.ID = Convert.ToInt32(dr["NhanSu_ID"]);
                    retVal.ChaMe = dr["NhanSu_ChaMe"].ToString();
                    retVal.ChucVu = dr["NhanSu_ChucVu"].ToString();
                    retVal.DanToc = Convert.ToInt32(dr["NhanSu_DanToc"]);
                    retVal.DaThoiViec = dr["NhanSu_DaThoiViec"] != DBNull.Value ? Convert.ToBoolean(dr["NhanSu_DaThoiViec"]) : false;
                    retVal.DiaChiHoKhau = dr["NhanSu_DiaChiHoKhau"].ToString();
                    retVal.DiaChiKhaiSinh = dr["NhanSu_DiaChiKhaiSinh"].ToString();
                    retVal.DiaChiLienHe = dr["NhanSu_DiaChiLienHe"].ToString();
                    retVal.DienThoai = dr["NhanSu_DienThoai"].ToString();
                    retVal.DoiTuongBHYT = dr["NhanSu_DoiTuongBHYT"].ToString();
                    retVal.Email = dr["NhanSu_Email"].ToString();
                    retVal.GioiTinh = dr["NhanSu_GioiTinh"] != DBNull.Value ? Convert.ToBoolean(dr["NhanSu_GioiTinh"]) : false;
                    retVal.HoVaTen = dr["NhanSu_HoVaTen"].ToString();
                    retVal.KhongTNNghe = dr["NhanSu_KhongTNNghe"] != DBNull.Value ? Convert.ToBoolean(dr["NhanSu_KhongTNNghe"]) : false;
                    retVal.KhongTNVK = dr["NhanSu_KhongTNVK"] != DBNull.Value ? Convert.ToBoolean(dr["NhanSu_KhongTNVK"]) : false;
                    retVal.LoaiHopDong = dr["NhanSu_LoaiHopDong"].ToString();
                    retVal.LuongChinh = Convert.ToDecimal(dr["NhanSu_LuongChinh"]);
                    retVal.LuongKhac = Convert.ToDecimal(dr["NhanSu_LuongKhac"]);
                    retVal.MaBenhVien = dr["NhanSu_MaBenhVien"].ToString();
                    retVal.MucTienBHYT = Convert.ToDecimal(dr["NhanSu_MucTienBHYT"]);
                    retVal.NgayCapCMT = dr["NhanSu_NgayCapCMT"] != DBNull.Value ? Convert.ToDateTime(dr["NhanSu_NgayCapCMT"]) : DateTime.MinValue;
                    retVal.NgayHieuLuc = dr["NhanSu_NgayHieuLuc"] != DBNull.Value ? Convert.ToDateTime(dr["NhanSu_NgayHieuLuc"]) : DateTime.MinValue;
                    retVal.NgayKy = dr["NhanSu_NgayKy"] != DBNull.Value ? Convert.ToDateTime(dr["NhanSu_NgayKy"]) : DateTime.MinValue;
                    retVal.NgaySinh = dr["NhanSu_NgaySinh"] != DBNull.Value ? Convert.ToDateTime(dr["NhanSu_NgaySinh"]) : DateTime.MinValue;
                    retVal.NoiCapCMT = dr["NhanSu_NoiCapCMT"].ToString();
                    retVal.NoiKham = dr["NhanSu_NoiKham"].ToString();
                    retVal.PCChucVu = Convert.ToDecimal(dr["NhanSu_PCChucVu"]);
                    retVal.PhongBan = Convert.ToInt32(dr["NhanSu_PhongBan"]);
                    retVal.PhuongHoKhau = dr["NhanSu_PhuongHoKhau"].ToString();
                    retVal.PhuongKhaiSinh = dr["NhanSu_PhuongKhaiSinh"].ToString();
                    retVal.PhuongLienHe = dr["NhanSu_PhuongLienHe"].ToString();
                    retVal.PhuongThucBHTN = dr["NhanSu_PhuongThucBHTN"].ToString();
                    retVal.PhuongThucBHYT = dr["NhanSu_PhuongThucBHYT"].ToString();
                    retVal.QuanHoKhau = dr["NhanSu_QuanHoKhau"].ToString();
                    retVal.QuanKhaiSinh = dr["NhanSu_QuanKhaiSinh"].ToString();
                    retVal.QuanLienHe = dr["NhanSu_QuanLienHe"].ToString();
                    retVal.QuocGia = Convert.ToInt32(dr["NhanSu_QuocGia"]);
                    retVal.SoCMT = dr["NhanSu_SoCMT"].ToString();
                    retVal.SoHopDong = dr["NhanSu_SoHopDong"].ToString();
                    retVal.SoSoBHXH = dr["NhanSu_SoSoBHXH"].ToString();
                    retVal.TangLuongChinh = dr["NhanSu_TangLuongChinh"].ToString();
                    retVal.TangPCChucVu = dr["NhanSu_TangPCChucVu"].ToString();
                    retVal.TangTNNghe = dr["NhanSu_TangTNNghe"].ToString();
                    retVal.TangTNVK = dr["NhanSu_TangTNVK"].ToString();
                    retVal.ThanhPhoHoKhau = Convert.ToInt32(dr["NhanSu_ThanhPhoHoKhau"]);
                    retVal.ThanhPhoKhaiSinh = Convert.ToInt32(dr["NhanSu_ThanhPhoKhaiSinh"]);
                    retVal.ThanhPhoLienHe = Convert.ToInt32(dr["NhanSu_ThanhPhoLienHe"]);
                    retVal.ThanNhanKhac = dr["NhanSu_ThanNhanKhac"].ToString();
                    retVal.ThuNhapBHTN = Convert.ToDecimal(dr["NhanSu_ThuNhapBHTN"]);
                    retVal.TNNghe = Convert.ToDecimal(dr["NhanSu_TNNghe"]);
                    retVal.TNVK = Convert.ToDecimal(dr["NhanSu_TNVK"]);
                }
            }
            finally
            {
                if (dr != null) dr.Close();
                dbConn.Close();
            }
            return retVal;
        }
    }
}
